package com.atwisdom.star.core.bsl.modelClass.hier;

import com.alibaba.fastjson.JSONObject;
import com.atwisdom.star.common.vo.ActionData;
import com.atwisdom.star.common.vo.ResultInfo;
import com.atwisdom.star.core.dao.pojo.modelClass.hier.HierInstance;

import java.util.List;
import java.util.Map;

public interface HierInstanceBslService {

    ResultInfo<?> queryById(ActionData<JSONObject> actionData);

    ResultInfo<?> updateById(ActionData<JSONObject> actionData);

    ResultInfo<?> copyById(ActionData<JSONObject> actionData);

    ResultInfo<?> updateBatchById(ActionData<JSONObject> actionData);

    ResultInfo<?> updateByIds(ActionData<JSONObject> actionData);

    /**
     * 不考虑model, 单独操作hierInstance
     * @param actionData
     * @return
     */
    ResultInfo<?> saveHierWithoutModel(ActionData<JSONObject> actionData);

    HierInstance updateInsById(HierInstance hierInstance);

    HierInstance addHierInsChild(JSONObject dataJson);

    ResultInfo<?> addChild(ActionData<JSONObject> actionData);

    ResultInfo<?> updateLimitCount(ActionData<JSONObject> actionData);

    /**
     * 不考虑model, 单独操作hierInstance
     * @param actionData
     * @return
     */
    ResultInfo<?>  deleteHierByIdList(ActionData<JSONObject> actionData);

    ResultInfo<?>  deleteByParentId(ActionData<JSONObject> actionData);

    ResultInfo<Map<Object, List<HierInstance>>> queryAndGroupBy(ActionData<JSONObject> actionData);

    ResultInfo<?> query(ActionData<JSONObject> actionData);


    ResultInfo<?> queryByPage(ActionData<JSONObject> actionData);

    ResultInfo<?> queryByPageWithContainerId(ActionData<JSONObject> actionData);

    ResultInfo<?> queryWithLink(ActionData<JSONObject> actionData);

    ResultInfo<?> updateByCondition(ActionData<JSONObject> actionData);

    ResultInfo<?> updateByDataCondition(ActionData<JSONObject> actionData);
}
